/**
 * flutter 初始化
 */
import 'package:flutter_benchu/utils/commonPkg.dart';
import 'package:flutter_benchu/app/app.dart';
import 'package:orientation/orientation.dart';


Future<void> init() async {

  WidgetsFlutterBinding.ensureInitialized();                                   //确保 当前flutter engine 已经初始成功
  FlutterError.onError = (FlutterErrorDetails details) async {                 //设置全局错误提示
    Zone.current.handleUncaughtError(details.exception, details.stack);        //转发至 Zone 中
  };

  /*******启动一个代码块 （所有的代码将在这个代码块里运行）**********/
  await runZoned<Future<Null>>(() async {
    // 设置屏幕方向
    OrientationPlugin.setPreferredOrientations([DeviceOrientation.portraitUp]);
    // 设置环境
    setEnvironment('dev');      //dev  online
    //设置日志格式
    await Log.init(tag: appTag);
    //读缓存 3秒延时
    await loadCache().timeout(
      3.seconds,
      onTimeout: () => Future.value(),
    );
    // 国际化文字
    setLocalizedValues(localizedValues);
    // 初始化路由
    Routes.configureRoutes(appRouter);
    // 启动
    runApp(App());
  }, onError: (error, stackTrace) async {
    //收到全局错误 弹出提示框
    if (envs.verboseMode) showToast(error.toString());
    //打印错误日志
    Log.v(error.toString(), tag: errorTag);
    Log.v(stackTrace.toString(), tag: errorTag);
  });
}
